﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////

#pragma once

#include "GmepComponentUpgrade.h"

namespace gcmp
{
    class IDocument;
}
namespace gmep
{
    class GMEP_COMPONENT_UPGRADE_EXPORT GmepComponentUpgradeUtils
    {
    public:
        /// \brief 初始化构件升级管理器
        /// 
        /// 初始化过程包括设置目标升级版本，以及注册升级器。
        /// 其中，目标升级版本默认为当前软件版本的前两位，例如0.21
        /// \param pDoc 待初始化升级管理器所在的文档
        /// \return void
        static void InitComponentUpgradeManagerAndRegisterUpgraders(gcmp::IDocument *pDoc);

        /// \ brief 查询项目构件库升级状态并判断是否允许打开工作单元
        /// \ 
        /// \ param projectId 项目Id
        /// \ [out]param isAllowToOpen 根据项目库升级状态查询结果返回是否允许打开工作单元
        /// \ [out]param message 若不允许打开工作单元，返回提示信息
        /// \ return void
        static void GetIsAllowToOpenByProjectComponentLibUpgradeStatus(const std::wstring &projectId, bool &isAllowToOpen, std::wstring &message);

        /// \ brief 获取当前运行的软件版本
        /// \ 
        /// \ param softwareVersion 若获取成功，返回当前软件版本，e.g. 0.33
        /// \ return 获取成功返回true，否则返回false
        static bool GetSoftwareVersion(std::wstring &softwareVersion);
    };
}


